package edu.hubu.talentmanagementsystem.model.ext;


import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;

import java.time.LocalDate;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import edu.hubu.talentmanagementsystem.common.SensitiveField;
import edu.hubu.talentmanagementsystem.model.Model;

import java.io.Serializable;

/**
 * <p>
 * 员工表
 * </p>
 *
 * @author moonlan
 * @since 2021-03-13
 */
@TableName("staff")
public class Staff extends Model<Staff> implements Serializable {


    /**
     * 员工ID
     */
    @TableId(value = "staff_id", type = IdType.AUTO)
    private Integer staffId;

    /**
     * 员工编码
     */
    @TableField("staff_num")
    private String staffNum;

    /**
     * 员工性别
     */
    @TableField("staff_gender")
    private Integer staffGender;

    /**
     * 员工密码
     */
    @TableField("staff_pwd")
    private String staffPwd;

    /**
     * 员工姓名
     */
    @TableField("staff_name")
    private String staffName;

    /**
     * 员工年龄
     */
    @TableField("staff_age")
    private Integer staffAge;

    /**
     * 员工邮箱
     */
    @TableField("staff_email")
    private String staffEmail;

    /**
     * 员工身份证号
     */
    @TableField("staff_id_card")
    @SensitiveField
    private String staffIdCard;

    /**
     * 员工学历
     */
    @TableField("staff_educational_degree")
    private String staffEducationalDegree;

    /**
     * 员工毕业院校
     */
    @TableField("staff_graduated_school")
    private String staffGraduatedSchool;

    /**
     * 员工毕业时间
     */
    @TableField("staff_graduated_date")
    private LocalDate staffGraduatedDate;

    /**
     * 员工电话
     */
    @TableField("staff_phone_number")
    private String staffPhoneNumber;

    /**
     * 员工头像
     */
    @TableField("staff_img_resource_id")
    private Integer staffImgResourceId;

    @TableField(exist = false)
    private Resource resource;

    public Resource getResource() {
        return resource;
    }

    public void setResource(Resource resource) {
        this.resource = resource;
    }

    /**
     * 员工角色
     */
    @TableField("staff_role_id")
    private Integer staffRoleId;

    @TableField(exist = false)
    private Role role;

    /**
     * 员工部门ID
     */
    @TableField("staff_department_id")
    private Integer staffDepartmentId;

    @TableField(exist = false)
    private Department department;

    /**
     * 员工公司ID
     */
    @TableField("staff_company_id")
    private Integer staffCompanyId;

    @TableField(exist = false)
    private Company company;

    /**
     * 员工是否拉黑
     */
    @TableField("staff_is_enable")
    private Boolean staffIsEnable;

    public Role getRole() {
        return role;
    }

    public Staff setRole(Role role) {
        this.role = role;
        return this;
    }

    public Department getDepartment() {
        return department;
    }

    public Staff setDepartment(Department department) {
        this.department = department;
        return this;
    }

    public Company getCompany() {
        return company;
    }

    public Staff setCompany(Company company) {
        this.company = company;
        return this;
    }

    public Integer getStaffId() {
        return staffId;
    }

    public Staff setStaffId(Integer staffId) {
        this.staffId = staffId;
        return this;
    }

    public String getStaffNum() {
        return staffNum;
    }

    public Staff setStaffNum(String staffNum) {
        this.staffNum = staffNum;
        return this;
    }

    public Integer getStaffGender() {
        return staffGender;
    }

    public Staff setStaffGender(Integer staffGender) {
        this.staffGender = staffGender;
        return this;
    }

    @SensitiveField
    public String getStaffPwd() {
        return staffPwd;
    }

    public Staff setStaffPwd(String staffPwd) {
        this.staffPwd = staffPwd;
        return this;
    }

    public String getStaffName() {
        return staffName;
    }

    public Staff setStaffName(String staffName) {
        this.staffName = staffName;
        return this;
    }

    public Integer getStaffAge() {
        return staffAge;
    }

    public Staff setStaffAge(Integer staffAge) {
        this.staffAge = staffAge;
        return this;
    }

    public String getStaffEmail() {
        return staffEmail;
    }

    public Staff setStaffEmail(String staffEmail) {
        this.staffEmail = staffEmail;
        return this;
    }

    @SensitiveField
    public String getStaffIdCard() {
        return staffIdCard;
    }

    public Staff setStaffIdCard(String staffIdCard) {
        this.staffIdCard = staffIdCard;
        return this;
    }

    public String getStaffEducationalDegree() {
        return staffEducationalDegree;
    }

    public Staff setStaffEducationalDegree(String staffEducationalDegree) {
        this.staffEducationalDegree = staffEducationalDegree;
        return this;
    }

    public String getStaffGraduatedSchool() {
        return staffGraduatedSchool;
    }

    public Staff setStaffGraduatedSchool(String staffGraduatedSchool) {
        this.staffGraduatedSchool = staffGraduatedSchool;
        return this;
    }

    public LocalDate getStaffGraduatedDate() {
        return staffGraduatedDate;
    }

    public Staff setStaffGraduatedDate(LocalDate staffGraduatedDate) {
        this.staffGraduatedDate = staffGraduatedDate;
        return this;
    }

    public String getStaffPhoneNumber() {
        return staffPhoneNumber;
    }

    public Staff setStaffPhoneNumber(String staffPhoneNumber) {
        this.staffPhoneNumber = staffPhoneNumber;
        return this;
    }

    public Integer getStaffImgResourceId() {
        return staffImgResourceId;
    }

    public Staff setStaffImgResourceId(Integer staffImgResourceId) {
        this.staffImgResourceId = staffImgResourceId;
        return this;
    }

    public Integer getStaffRoleId() {
        return staffRoleId;
    }

    public Staff setStaffRoleId(Integer staffRoleId) {
        this.staffRoleId = staffRoleId;
        return this;
    }

    public Integer getStaffDepartmentId() {
        return staffDepartmentId;
    }

    public Staff setStaffDepartmentId(Integer staffDepartmentId) {
        this.staffDepartmentId = staffDepartmentId;
        return this;
    }

    public Integer getStaffCompanyId() {
        return staffCompanyId;
    }

    public Staff setStaffCompanyId(Integer staffCompanyId) {
        this.staffCompanyId = staffCompanyId;
        return this;
    }

    public Boolean getStaffIsEnable() {
        return staffIsEnable;
    }

    public Staff setStaffIsEnable(Boolean staffIsEnable) {
        this.staffIsEnable = staffIsEnable;
        return this;
    }

    @Override
    public String toString() {
        return "Staff{" +
                "staffId=" + staffId +
                ", staffNum=" + staffNum +
                ", staffGender=" + staffGender +
                ", staffPwd=" + staffPwd +
                ", staffName=" + staffName +
                ", staffAge=" + staffAge +
                ", staffEmail=" + staffEmail +
                ", staffIdCard=" + staffIdCard +
                ", staffEducationalDegree=" + staffEducationalDegree +
                ", staffGraduatedSchool=" + staffGraduatedSchool +
                ", staffGraduatedDate=" + staffGraduatedDate +
                ", staffPhoneNumber=" + staffPhoneNumber +
                ", staffImgResourceId=" + staffImgResourceId +
                ", staffRoleId=" + staffRoleId +
                ", staffDepartmentId=" + staffDepartmentId +
                ", staffCompanyId=" + staffCompanyId +
                ", staffIsEnable=" + staffIsEnable +
                "}";
    }
}
